/* 给定一个单链表，按递增排序输出单链表中各结点的数据元素，并释放节点所占空间 */

#include <iostream>
#include "headfun.h"
using namespace std;

// 递增顺序输出
void print(LNode *&head)
{
  // 从头遍历链表
  while (head->next != NULL)
  {
    // 两个指针
    LNode *pre = head;
    LNode *p = head->next;
    
    // 找到最小值
    while (p->next != NULL)
    {
      if (p->next->data < pre->next->data)
        pre = p;
      p = p->next;
    }
    
    // 输出最小值
    cout << pre->next->data << " ";
    
    // 删除最小值
    LNode *u = pre->next;
    pre->next = u->next;
    free(u);
  }
  
  // 释放头节点
  free(head);
}

int main()
{
  // 创建链表
  LNode *L = head_Linklist();
  
  // 递增顺序输出
  print(L);
  
  return 0;
}